package 二分查找.easy;

import java.util.HashSet;
import java.util.Set;

/**
 * 1. 问题描述
 *      给定两个数组，编写一个函数来计算它们的交集。
 *      具体的例子：
 *           输入：nums1 = [1,2,2,1], nums2 = [2,2]
 *           输出：[2]
 *
 * 2. 算法分析
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 两个数组的交集 {
    public static void main(String[] args) {

    }

    /**
     * 集合取出数组中的重复元素，线性扫描即可
     * 时间复杂度非常高 不推荐  空间消耗也比较大
     * @param nums1
     * @param nums2
     * @return
     */
    public static int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        for(int num : nums1) {
            set1.add(num);
        }
        for(int num : nums2) {
            set2.add(num);
        }
        int[] ans = new int[Math.min(set1.size(),set2.size())];
        int i = 0;
        for(int num : set1) {
            for(int cur : set2) {
                if(num == cur) {
                    ans[i] = num;
                    i++;
                }
            }
        }
        int[] temp = new int[i];
        for(int j = 0; j < i; j++) {
            temp[j] = ans[j];
        }
        return temp;
    }
}
